//using SubhadraSolutions.Sharp.Utils.Validation;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Reflection;
//using System.Text;
//using System.Threading.Tasks;

//namespace SubhadraSolutions.Sharp.Utils.Validation.Validators
//{
//    public sealed class CompositeValidator : IValidator
//    {
//        public List<ValidatorInfo> ValidatorInfos
//        {
//            get;
//            set;
//        }

//        public ValidationResult Validate(object obj, string objectName)
//        {
//            foreach (var info in ValidatorInfos)
//            {
//                object item = obj;
//                if (!string.IsNullOrWhiteSpace(info.PropertyName))
//                {
//                    Type type = obj.GetType();
//                    PropertyInfo property = type.GetProperty(info.PropertyName);
//                    item = property.GetValue(obj);
//                }
//                ValidationResult result = info.Validator.Validate(item, objectName + '.' + info.PropertyName);
//                if (result.Status == ValidationStatus.Failure)
//                {
//                    return result;
//                }
//            }
//            return new ValidationResult
//            {
//                Status = ValidationStatus.Success
//            };
//        }
//    }
//}